package cn.edu.sgu.www.mhxysy.service.equipment;

import cn.edu.sgu.www.mhxysy.pager.Pager;
import cn.edu.sgu.www.mhxysy.dto.equipment.EquipmentDTO;
import cn.edu.sgu.www.mhxysy.dto.equipment.EquipmentForgeDTO;
import cn.edu.sgu.www.mhxysy.entity.equipment.Equipment;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author 沐雨橙风ιε
 * @version 1.0
 */
public interface EquipmentService {

	/**
	 * 重新计算装备评分
	 * @param equipmentId 装备ID
	 */
	void compute(String equipmentId);

	/**
	 * 打造装备
	 * @param equipmentForgeDTO 装备打造信息
	 */
	@Transactional(rollbackFor = Exception.class)
	void forge(EquipmentForgeDTO equipmentForgeDTO);

	/**
	 * 添加装备
	 * @param equipmentDTO 装备信息
	 */
	@Transactional(rollbackFor = Exception.class)
	void insert(EquipmentDTO equipmentDTO);

	/**
	 * 通过ID批量删除装备
	 * @param ids 装备ID列表
	 */
	@Transactional(rollbackFor = Exception.class)
	void deleteByIds(List<String> ids);

	/**
	 * 通过ID修改装备信息
	 * @param equipmentDTO 装备信息
	 */
	@Transactional(rollbackFor = Exception.class)
	void updateById(EquipmentDTO equipmentDTO);

	/**
	 * 查询全部装备
	 * @return List<Equipment>
	 */
	List<Equipment> selectAll();

	/**
	 * 通过ID查询装备信息
	 * @param id 装备ID
	 * @return Equipment
	 */
	Equipment selectById(String id);

	/**
	 * 获取装备总评分
	 * @param equipmentId 装备ID
	 * @return int 装备的总评分
	 */
	int getTotalScore(String equipmentId);

	/**
	 * 通过角色ID查询装备列表
	 * @param roleId 角色ID
	 * @return List<Equipment>
	 */
	List<Equipment> selectByRoleId(String roleId);

	/**
	 * 分页查询装备列表
	 * @param pager 分页参数
	 * @return Page<Equipment>
	 */
	Page<Equipment> selectByPage(Pager<Equipment> pager);

	/**
	 * 通过装备类型ID查询装备列表
	 * @param categoryId 装备类型ID
	 * @return List<Equipment>
	 */
    List<Equipment> selectByCategoryId(Integer categoryId);
}